# -*- encoding: utf-8 -*-

import os


# 项目根路径
project_path = os.path.join(os.path.dirname(os.path.abspath(__file__)))
# 日志路径
LOG_DIR = os.path.join(project_path, 'logs')
if not os.path.exists(LOG_DIR):
    os.mkdir(LOG_DIR)

# 并发频率
PROCESS_NUMBER = 5
THREAD_NUMBER = 40

# redis 配置
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379
REDIS_PWD = 'bsc9527'
REDIS_DB = 0

# 布隆过滤器
ADDR_COL = 'address'
BLOOM_FP = 0.0000001  # 误差率1/百万
# 预计处理数据量
BLOOM_N = 200_000_000

# 加载已经完成的过的结果 推入bloom
INPUT_DIR = os.path.join(project_path, 'final-results')
if not os.path.exists(INPUT_DIR):
    os.mkdir(INPUT_DIR)

RPC_HTTP = 'http://127.0.0.1:8545'
RPC_HTTP = os.environ.get('RPC_HTTP', RPC_HTTP)
START_BLOCK = int(os.environ.get('START_BLOCK', 0))
END_BLOCK = int(os.environ.get('END_BLOCK', 500_000))
BLOCK_STEP = int(os.environ.get('BLOCK_STEP', 2000))

# 批次采集量 = tokens / ADDRESS_CHUNK, 所以，如果更改了批次采集量 - 需要清除任务缓存
# redis 中执行： del "scan_progress" , 否则采集任务可能发生错乱风险
ADDRESS_CHUNK = int(os.environ.get('ADDRESS_CHUNK', 10))

CONFIRMATIONS = int(os.environ.get('CONFIRMATIONS', 40))
USD_THRESHOLD = int(os.environ.get('USD_THRESHOLD', 100))
ROW_LIMIT = int(os.environ.get('ROW_LIMIT', 5_000_000))
FOLLOW_LATEST = str(os.environ.get('FOLLOW_LATEST', "0")) == "1"
POLL_INTERVAL_MS = int(os.environ.get('POLL_INTERVAL_MS', 15000))
CHECKPOINT_INTERVAL = int(os.environ.get('CHECKPOINT_INTERVAL', 50))
# 请求RPC_HTTP 超时重试
MAX_RETRIES = int(os.environ.get('MAX_RETRIES', 5))
RETRY_DELAY_BASE = int(os.environ.get('RETRY_DELAY_BASE', 1))
REQUEST_DELAY = int(os.environ.get('REQUEST_DELAY', 100))
TARGET_END_RAW = str(os.environ.get('TARGET_END', "62530100"))

# tokens 文件
TOKENS_CSV = str(os.environ.get('TOKENS_CSV', 'token_withbalance.csv'))
outDir = os.path.join(project_path, 'output')
if not os.path.exists(outDir):
    os.mkdir(outDir)